package com.xiaomeng.singleton.type4;



public class SingletonTest04 {

    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println(instance1 == instance2);
        System.out.println("instance1.hashCode : " + instance1.hashCode());
        System.out.println("instance2.hashCode : " + instance2.hashCode());
    }
}

// 懒汉式（线程安全，同步方法）
class Singleton {
    private static Singleton instance;
    private Singleton() {}
    // 提供一个静态方法，当使用到这个方法时，才会去创建instance对象
    // 懒汉式  +  加入了同步处理的代码，解决线程安全问题
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
    /**
     * 效率太低，每个线程在想获得实例的时候，执行getInstance()方法都要进行同步 （getInstance()方法是会经常使用的）
     * 而其实这个方法只执行一次实力化代码就够了，后面想获得该类实例，直接return就行了
     * 方法进行同步效率太低，实际中不推荐这种方式
     * */
}


